Operating systems run on host computer systems and communicate with devices using any of a variety of protocols and communication standards. The operating system implements drivers that allow it to send or receive data from a connected device. The communication between device and host can include enumeration, which is the identification of connected devices to the computer system and initialization of the required drivers that enable the device to function with the host computer. In some cases, a device may need to know the identity (i.e., type) of the operating system running on the host computer to which it is connected.
One such instance can occur when a device needs to run a particular program for the host computer system that is dependent on the type of operating system running on that host. For example, a storage device connected to a host computer system might store different versions of an update program for updating a program or flash memory of the host. One of the versions of the update program needs to be run on the device (or provided to the host to be run) to perform the update, where the version to be run is based on the type of operating system running on the host. For example, a first version is executed if the host is running a LINUX® operating system, while a second version is executed if the host is running a WINDOWS® operating system from Microsoft Corp. In a different embodiment, a device may need to know the identity of the operating system to perform a task for the user, such as communicate with the developer of the operating system or perform functions specific to a particular operating system.
In another example, some server systems can include multiple individual server computers, where each server is connected to a central system or set of hardware. For example, one type of server system is a “blade” server such as available from IBM Corporation, and is a system having a chassis or enclosure shared by several servers. Each server is provided as a minimally-packaged computer motherboard “blade” that includes its own processor(s), memory, and other components. System management hardware can control system devices and resources available to any of the blades, including a shared CD device, keyboard and mouse devices, and other resources. Each blade can run its own operating system, and in many cases different operating systems are operating on different blades within a blade server. Software applications running on a blade, launched by management hardware, may need to know the identity of the particular operating system running on a blade. For example, UpdateXpress is an application available from IBM Corporation which updates server firmware and the firmware of supported options provided within a server blade. This application needs to know the type of operating system running on the blade so that the proper updates can be performed. These kinds of applications may request operating system information through the system management hardware.
Existing techniques for identifying an operating system are time consuming or labor intensive. For example, a user is typically required to manually identify the operating system running and indicate that operating system to a device, program, or management hardware. Since there is no existing standard for signals or codes that identify an operating system, there is no automatic detection of operating system type. Software can be provided to run under each operating system and identify the operating system to a requesting device or application, but such software is not provided on most systems.
Accordingly, what is needed is the ability to identify the operating system running on a server or other computer system, without requiring special software running under each operating system or manual identification by a user. The present invention addresses such a need.